3.8 [PPIs] Sections
These sections are optional.
Summary
Defines the optional [Ppis]
section tag. This is a list of the global PPI C
Names that are referenced in the EDK II package's module C code.
PPI entries listed in architectural sections are not permitted to be listed in the common architectural section.
The 'common
' architecture modifier in a section tag must not be combined with
other architecture type modifiers; doing so will result in a build break.
The use of a <MACROVAL>
element in this section is prohibited.
Each PPI entry must be listed only once per section.
Prototype
<Ppis> ::= "[Ppis" [<com_attribs>] "]" <EOL> <PpiEntries>*
<com_attribs> ::= {<Public>} {<Hidden>}
<Public> ::= {".common"} {<attribs>}
<Hidden> ::= {".common.Private"} {<hattribs>}
<attribs> ::= <attrs> ["," <TS> "Ppis" <attrs>]*
<attrs> ::= "." <arch>
<hattribs> ::= <hattrs> ["," <TS> "Ppis" <hattrs>]*
<hattrs> ::= "." <arch> ".Private"
<PpiEntries> ::= [<PpiComment>]
<TS> <CName> <Eq> <CFormatGUID> {<CommentBlock>} {<EOL>}
<PpiComment> ::= [<Description>]
<TS> "##" <TS> <PpiHeaderFile> <EOL>
<Description> ::= <TS> "##" <TS> <AsciiString> <EOL>
[<TS> "#" <TS> <AsciiString> <EOL>]*
<PpiHeaderFile> ::= <PATH> <Word> ".h"
<CommentBlock> ::= [<TS> "##" <TS> <ModuleTypeList>]
{<Comment>} {<EOL>}
Parameters
PpiHeaderFile
Path to the PPI header file statement listed in comments in this section must be relative to the directory that contains the DEC file. Use of "..", "../" or "./" in the directory path is prohibited.
Restrictions
It is NOT permissible to list a PPI entry under common and under a specific
architecture. It is permissible to specify PPI entries under all architectures
except "common
" if different Guid values may be required for different
architectures.
It is NOT permissible to mix section tags without the Private
modifier with
section tags with the Private
modifier. If this condition is detected, the
build tools must terminate with an error message.
For example, [Ppis.common, Ppis.IA32.Private]
is prohibited.
It is NOT permissible for the same PPI to be listed in section tags with and
without the Private
modifier. If this condition is detected, the build tools
must terminate with an error message.
For example, the following is prohibited because the PPI named MyPrivatePpi
is listed in a tag with and without a Private
modifier.
[Ppis]
MyPrivatePpi = { 0x10ed6a18, 0xbbf7, 0x4051, { 0xba, 0xb8, 0xb4, 0x90, 0x1a, 0x65, 0xa2, 0xc5 }}
[Ppis.common.Private]
MyPrivatePpi = { 0x10ed6a18, 0xbbf7, 0x4051, { 0xba, 0xb8, 0xb4, 0x90, 0x1a, 0x65, 0xa2, 0xc5 }}
Example
# Global Ppis Definition section - list of Global Ppis C Name
# Data Structures that are provided by
# this package.
#
#######################################################################
[Ppis.common]
gPeiNtThunkPpiGuid = { 0x98C281E5, 0xF906, 0x43DD,{ 0xA9, 0x2B, 0xB0, 0x03, 0xBF, 0x27, 0x65, 0xDA }}
gNtPeiLoadFilePpiGuid = { 0xFD0C65EB, 0x0405, 0x4CD2,{ 0x8A, 0xEE, 0xF4, 0x00, 0xEF, 0x13, 0xBA, 0xC2 }}
gNtFwhPpiGuid = { 0x4E76928F, 0x50AD, 0x4334,{ 0xB0, 0x6B, 0xA8, 0x42, 0x13, 0x10, 0x8A, 0x57 }}
gPeiNtAutoScanPpiGuid = { 0x0DCE384D, 0x007C, 0x4BA5,{ 0x94, 0xBD, 0x0F, 0x6E, 0xB6, 0x4D, 0x2A, 0xA9 }}